package com.ato.mybatis.response;

import com.ato.mybatis.enums.RestStatusEnum;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;


import java.io.Serializable;

/**
 * @author wangjing
 * @create 2021--09--27--下午 2:24
 */
@Data
@ToString
@NoArgsConstructor
public class R implements Serializable {
    /**
     * 业务错误码
     */
    private Integer code;
    /**
     * 信息描述
     */
    private String message;
    /**
     * 返回数据
     */
    private Object data;

    public R(Integer code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    /**
     * 成功返回：带有数据
     *
     * @param obj : 成功返回的数据
     * @return
     */
    public static R ok(Object obj) {
        return new R(RestStatusEnum.SUCCESS.getCode(), RestStatusEnum.SUCCESS.getMessage(), obj);
    }

    /**
     * 成功返回：无数据
     *
     * @return
     */
    public static R ok() {
        return new R(RestStatusEnum.SUCCESS.getCode(), RestStatusEnum.SUCCESS.getMessage(), null);
    }

    /**
     * @param code    :   错误状态码
     * @param message ：错误信息
     * @return
     */
    public static R fail(int code, String message) {
        return new R(code, message, null);
    }

    @Override
    public String toString() {
        return "R{" +
                "code=" + code +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }
}